package com.deer.wms.ware.task.service;

import com.deer.wms.intercept.common.data.CurrentUser;
import com.deer.wms.project.root.service.SuperService;
import com.deer.wms.ware.task.model.SO.SoMaster;
import com.deer.wms.ware.task.model.SO.SoMasterCriteria;
import com.deer.wms.ware.task.model.out.OutDetail;
import com.deer.wms.ware.task.model.out.OutMaster;
import com.deer.wms.ware.task.model.out.OutMasterDto;

import java.util.List;

/**
 * <p>
 * 发运单master 服务类
 * </p>
 *
 * @author luowei
 * @since 2022-04-18 17:42:23
 */
public interface OutMasterService extends SuperService<OutMaster> {
    /**
     * 按条件查询
     * @param criteria criteria
     * @return List<OutMasterDto>
     */
    List<OutMasterDto> findList(SoMasterCriteria criteria);

    /**
     * 根据已拣货任务生成出库单
     * @param soMaster 出库任务
     * @param outDetails 拣货任务
     * @param currentUser 操作人
     * @return 出库单号
     */
    String createOutBill(SoMaster soMaster, List<OutDetail> outDetails, CurrentUser currentUser);

    /**
     * 出库单确认
     * @param outBillNo 出库单号
     * @param currentUser 操作人
     */
    void confirmOutBill(String outBillNo, CurrentUser currentUser);

    /**
     * 根据出库任务生成出库单
     * @param soMaster 出库任务
     * @param currentUser 操作人
     * @return 出库单号
     */
    String createOutBillBySoMaster(SoMaster soMaster, CurrentUser currentUser);
}
